1. Field of the Invention
The present invention relates to user interfaces for computer systems. More specifically, the present invention relates to a method and an apparatus for implementing a user interface manager that operates on a scene graph, which defines visual attributes for a user interface associated with an application.
2. Related Art
Today, most personal computers and other high-end devices support window-based graphical user interfaces (GUIs), which were originally developed back in the 1980's. These window-based interfaces allow a user to manipulate windows through a pointing device (such as a mouse), in much the same way that pages can be manipulated on a desktop. However, because of limitations on graphical processing power at the time windows were being developed, many of the design decisions for windows were made with computational efficiency in mind. In particular, window-based systems provide a very flat (two-dimensional) 2D user experience, and windows are typically manipulated using operations that keep modifications of display pixels to a minimum. Even today's desktop environments like Microsoft Windows (distributed by the Microsoft Corporation of Redmond, Wash.) include vestiges of design decisions made back then.
In recent years, because of increasing computational requirements of 3D applications, especially 3D games, the graphical processing power of personal computers and other high-end devices has increased dramatically. For example, a middle range PC graphics card, the “GeForce2 GTS” distributed by the NVIDIA Corporation of Sunnyvale, Calif., provides a 3D rendering speed of 25 million polygon-per-second, and Microsoft's “Xbox” game console provides 125 million polygon-per-second. These numbers are significantly better than those of high-end graphics workstation in the early 1990's, which cost tens of thousands (and even hundreds of thousands) of dollars.
As graphical processing power has increased in recent years, a number of 3D user interfaces have been developed. These 3D interfaces typically allow a user to navigate through and manipulate 3D objects. These 3D user interfaces often represent their constituent 3D objects and the relationships between these 3D objects using a “scene graph.” A scene graph includes nodes and links that describe graphical components and relationships between them. For example, graphical components include graphical objects, such as boxes and images, or user interface components, such as buttons and check boxes. (Note that although this specification describes a scene graph that represents 3D graphical components in a 3D display, a scene graph can also be used to represent 2D graphical components in a 2D display.)
A scene graph defines properties for these graphical components, including color, transparency, location, and transformations, such as rotation and scaling. Note that these properties can be expressed in a special kind of node, or alternatively, can be embedded in a graphical node. A scene graph can also define groupings of graphical objects and spatial relationships between graphical objects.
A number of different representations can be used to specify scene graphs. For example, a scene graph can be specified using the Java3D scene graph standard, the Virtual Reality Modeling Language (VRML) standard, or the SVG (Scalable Vector Graphics) standard. A scene graph can also be specified using the extensible Markup Language (XML) format; it is even possible to express a simple scene graph using a HyperText Markup Language (HTML) document.
Graphical display systems typically operate through a window manager, which manages interactions between the user and client applications. In doing so, the window manager accepts user inputs, and translates them into corresponding actions for the client applications. The window manager can then cause the corresponding actions to be performed, possibly based on predefined policies. A window manager can also accept requests from client applications, for example to perform actions on visual or audio representations, and can then perform corresponding actions based on some policies.
Unfortunately, in existing systems, clients do not expose the graphical components they are supporting to the window manager. Consequently, the window manager has only limited capabilities to view and manipulate graphical components defined by client applications.
Hence, what is needed a method and an apparatus that more effectively enables a window manager to view and manipulate graphical components defined by client applications.